package com.tuda.common.utils;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ToolUtil {

    public ToolUtil() {
    }

    public static boolean isNotEmpty(Object o) {
        return !isEmpty(o);
    }

    /**
     * 利用正则表达式判断字符串是否是数字
     * @param str
     * @return
     */
    public static boolean isNumeric(String str){
        Pattern pattern = Pattern.compile("^[0-9]*$");
        Matcher isNum = pattern.matcher(str);
        if( !isNum.matches() ){
            return false;
        }
        return true;
    }

    public static boolean isTrueOrFalse(Object o) {
        if (isEmpty(o)) {
            return false;
        }
        if (o instanceof Boolean) {
            if (o.toString().equals("true")) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

    public static boolean isEmpty(Object o) {
        if (o == null) {
            return true;
        } else {
            if (o instanceof String) {
                if (o.toString().trim().equals("")) {
                    return true;
                }
            } else if (o instanceof List) {
                if (((List) o).size() == 0) {
                    return true;
                }
            } else if (o instanceof Map) {
                if (((Map) o).size() == 0) {
                    return true;
                }
            } else if (o instanceof Set) {
                if (((Set) o).size() == 0) {
                    return true;
                }
            } else if (o instanceof Object[]) {
                if (((Object[]) (o)).length == 0) {
                    return true;
                }
            } else if (o instanceof int[]) {
                if (((int[]) (o)).length == 0) {
                    return true;
                }
            } else if (o instanceof byte[]) {
                if (((byte[]) (o)).length == 0) {
                    return true;
                }
            } else if (o instanceof long[] && ((long[]) (o)).length == 0) {
                return true;
            }
            return false;
        }
    }

    public static boolean isOneEmpty(Object... os) {
        Object[] var1 = os;
        int var2 = os.length;

        for (int var3 = 0; var3 < var2; ++var3) {
            Object o = var1[var3];
            if (isEmpty(o)) {
                return true;
            }
        }
        return false;
    }

    public static boolean isAllEmpty(Object... os) {
        Object[] var1 = os;
        int var2 = os.length;

        for (int var3 = 0; var3 < var2; ++var3) {
            Object o = var1[var3];
            if (!isEmpty(o)) {
                return false;
            }
        }
        return true;
    }

    public static boolean parseBoolean(String s) {
        Boolean A = ((s != null) && s.equalsIgnoreCase("true"));
        Boolean B = ((s != null) && s.equalsIgnoreCase("1"));
        return A || B;
    }

}
